﻿#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
//结构体
//struct S
//{
//	char c;
//	int i;
//};
//
////联合体/共用体
//union U
//{
//	char c;
//	int i;
//};
//
//int main()
//{
//	union U u = { 0 };
//	printf("%d\n", sizeof(u));//联合体/共用体，不开辟新的空间
//
//	printf("%p\n", &u);
//	printf("%p\n", &(u.i));
//	printf("%p\n", &(u.c));
//	return 0;
//}
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	un.i = 0x11223344;
//	un.c = 0x55;
//	printf("%x\n", un.i);
//	return 0;
//}
//
//#include <stdio.h>
//
//union Un1
//{
//	char c[5];//5         1  8  1
//	int i;//4             4  8  4
//};
//union Un2
//{
//	short c[7];//14       2  8  2
//	int i;//4             4  8  4
//};
//int main()
//{
//	//下⾯输出的结果是什么？
//	printf("%d\n", sizeof(union Un1));//8
//	printf("%d\n", sizeof(union Un2));//16
//	return 0;
//}
//
////联合体的大小，是其中最大成员的大小

//struct gift_list
//{
//	//公共属性
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//
//	//特殊属性
//	char title[20];//书名
//	char author[20];
//	int num_pages;//⻚数
//
//	char design[30];//设计
//	int colors;//颜⾊
//	int sizes;//尺⼨
//};//可以但是浪费内存
//

struct gift_list
{
	int stock_number;//库存量
	double price; //定价
	int item_type;//商品类型

	union {
		struct
		{
			char title[20];//书名
			char author[20];//作者
			int num_pages;//⻚数
		}book;//匿名只用一次
		struct
		{
			char design[30];//设计
		}mug;
		struct
		{
			char design[30];//设计
			int colors;//颜⾊
			int sizes;//尺⼨
		}shirt;
	}item;
};
int main()
{
	struct gift_list gl = { 0 };
	gl.stock_number = 100;
	gl.price = 25;
	gl.item_type = 2;
}
